home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / src / eval.c < prev    next >
Text File  |  1993-07-08  |  11KB  |  387 lines

  1. # define IFNOTIN(b, s) if (! (s & 1 << b)) {
  2. # define INCL(s, b) s |= 1 << b
  3. # define REMOTE_SYN(i, b, c, n, t, a) (n->yyHead.i & 1 << b ? (void) 0 : c (n), n->t.a)
  4. # define REMOTE_INH(i, b, k, n, t, a) (n->yyHead.i & 1 << b ? (void) 0 : yyI [n->yyHead.yyOffset + k](n->yyHead.yyParent), n->t.a)
  5. # define DEP(a, b) a
  6. # define SELF yyt
  7. # include "Eval.h"
  8.  
  9.  
  10. static char yyb;
  11.  
  12. static void yyE ARGS((register tTree yyt));
  13. static void yyS1 ARGS((register tTree yyt));
  14. static void yyS2 ARGS((register tTree yyt));
  15. static void yyS3 ARGS((register tTree yyt));
  16.  
  17. static Tree_tProcTree yyI [1] = { 0,
  18. };
  19.  
  20. static void yyAbort
  21. # if defined __STDC__ | defined __cplusplus
  22.  (tTree yyt)
  23. # else
  24.  (yyt) tTree yyt;
  25. # endif
  26. {
  27.  (void) fprintf (stderr, "Error: module Eval, cyclic dependencies\n");
  28.  exit (1);
  29. }
  30.  
  31. void Eval
  32. # if defined __STDC__ | defined __cplusplus
  33.  (tTree yyt)
  34. # else
  35.  (yyt) tTree yyt;
  36. # endif
  37. { InitTree (yyt); yyE (yyt); }
  38.  
  39. static void yyE
  40. # if defined __STDC__ | defined __cplusplus
  41.  (register tTree yyt)
  42. # else
  43.  (yyt) register tTree yyt;
  44. # endif
  45. {
  46.  for (;;) {
  47.   if (yyt == NoTree || yyt->yyHead.yyIsComp0 & 1) return;
  48.   yyt->yyHead.yyIsComp0 |= 1;
  49.   switch (yyt->Kind) {
  50.   case kCOMP_UNIT:
  51. yyt = yyt->COMP_UNIT.COMP_ELEMENTS; break;
  52.   case kBODY_NODE:
  53. yyE (yyt->BODY_NODE.DECLS);
  54. yyE (yyt->BODY_NODE.STATS);
  55. yyt = yyt->BODY_NODE.INTERNALS; break;
  56.   case kSTRING_TYPE:
  57. yyt = yyt->STRING_TYPE.LENGTH; break;
  58.   case kINDEX_TYPE:
  59. yyE (yyt->INDEX_TYPE.LOWER);
  60. yyt = yyt->INDEX_TYPE.UPPER; break;
  61.   case kTYPE_ID:
  62. yyt = yyt->TYPE_ID.ID; break;
  63.   case kARRAY_TYPE:
  64. yyE (yyt->ARRAY_TYPE.ARRAY_INDEX_TYPES);
  65. yyt = yyt->ARRAY_TYPE.ARRAY_COMP_TYPE; break;
  66.   case kRECORD_TYPE:
  67. yyt = yyt->RECORD_TYPE.COMPONENTS; break;
  68.   case kUNION_TYPE:
  69. yyt = yyt->UNION_TYPE.COMPONENTS; break;
  70.   case kENUM_TYPE:
  71. yyt = yyt->ENUM_TYPE.COMPONENTS; break;
  72.   case kPOINTER_TYPE:
  73. yyt = yyt->POINTER_TYPE.PTR_COMP; break;
  74.   case kARRAY1_TYPE:
  75. yyE (yyt->ARRAY1_TYPE.SIZE);
  76. yyt = yyt->ARRAY1_TYPE.ARRAY1_COMP_TYPE; break;
  77.   case kFUNCTION_TYPE:
  78. yyE (yyt->FUNCTION_TYPE.FORMALS);
  79. yyt = yyt->FUNCTION_TYPE.RESULT_TYPE; break;
  80.   case kTYPE_LIST:
  81. yyE (yyt->TYPE_LIST.Elem);
  82. yyt = yyt->TYPE_LIST.Next; break;
  83.   case kMODULE_DECL:
  84. yyt = yyt->MODULE_DECL.MODULE_BODY; break;
  85.   case kPROGRAM_DECL:
  86. yyE (yyt->PROGRAM_DECL.FORMALS);
  87. yyt = yyt->PROGRAM_DECL.PROGRAM_BODY; break;
  88.   case kPROC_DECL:
  89. yyE (yyt->PROC_DECL.FORMALS);
  90. yyt = yyt->PROC_DECL.PROC_BODY; break;
  91.   case kFUNC_DECL:
  92. yyE (yyt->FUNC_DECL.FORMALS);
  93. yyE (yyt->FUNC_DECL.FUNC_BODY);
  94. yyt = yyt->FUNC_DECL.RESULT_TYPE; break;
  95.   case kBLOCK_DATA_DECL:
  96. yyt = yyt->BLOCK_DATA_DECL.DATA_BODY; break;
  97.   case kTYPE_DECL:
  98. yyt = yyt->TYPE_DECL.VAL; break;
  99.   case kENTITY_DECL:
  100. yyt = yyt->ENTITY_DECL.ATTRIBUTES; break;
  101.   case kVAR_DECL:
  102. yyt = yyt->VAR_DECL.VAL; break;
  103.   case kCOMMON_DECL:
  104. yyt = yyt->COMMON_DECL.IDS; break;
  105.   case kNAMELIST_DECL:
  106. yyt = yyt->NAMELIST_DECL.IDS; break;
  107.   case kTEMPLATE_DECL:
  108. yyt = yyt->TEMPLATE_DECL.DIMENSIONS; break;
  109.   case kPROCESSORS_DECL:
  110. yyt = yyt->PROCESSORS_DECL.DIMENSIONS; break;
  111.   case kSTMT_FUNC_DECL:
  112. yyE (yyt->STMT_FUNC_DECL.FORMALS);
  113. yyE (yyt->STMT_FUNC_DECL.RESULT_TYPE);
  114. yyt = yyt->STMT_FUNC_DECL.FFUNC_BODY; break;
  115.   case kINTERFACE_DECL:
  116. yyt = yyt->INTERFACE_DECL.ITEMS; break;
  117.   case kEXT_PROC_DECL:
  118. yyt = yyt->EXT_PROC_DECL.FORMALS; break;
  119.   case kEXT_FUNC_DECL:
  120. yyE (yyt->EXT_FUNC_DECL.FORMALS);
  121. yyt = yyt->EXT_FUNC_DECL.RESULT_TYPE; break;
  122.   case kVAL_PARAM_DECL:
  123. yyt = yyt->VAL_PARAM_DECL.VAL; break;
  124.   case kVAR_PARAM_DECL:
  125. yyt = yyt->VAR_PARAM_DECL.VAL; break;
  126.   case kPROC_PARAM_DECL:
  127. yyt = yyt->PROC_PARAM_DECL.FORMAL; break;
  128.   case kFUNC_PARAM_DECL:
  129. yyE (yyt->FUNC_PARAM_DECL.FORMAL);
  130. yyt = yyt->FUNC_PARAM_DECL.RESULT_TYPE; break;
  131.   case kIMPLICIT_DECL:
  132. yyt = yyt->IMPLICIT_DECL.VAL; break;
  133.   case kUSE_DECL:
  134. yyt = yyt->USE_DECL.RENAMINGS; break;
  135.   case kONLY_USE_DECL:
  136. yyt = yyt->ONLY_USE_DECL.NAMES; break;
  137.   case kEQV_DECL:
  138. yyt = yyt->EQV_DECL.VARS; break;
  139.   case kDATA_DECL:
  140. yyE (yyt->DATA_DECL.VARS);
  141. yyt = yyt->DATA_DECL.VALS; break;
  142.   case kDIMENSION_DECL:
  143. yyt = yyt->DIMENSION_DECL.INDEXES; break;
  144.   case kINIT_DATA_DECL:
  145. yyt = yyt->INIT_DATA_DECL.VAL; break;
  146.   case kTYPESPEC_DECL:
  147. yyt = yyt->TYPESPEC_DECL.VAL; break;
  148.   case kPARAMETER_DECL:
  149. yyt = yyt->PARAMETER_DECL.VAL; break;
  150.   case kDISTRIBUTE_DECL:
  151. yyt = yyt->DISTRIBUTE_DECL.DISTRIBUTION; break;
  152.   case kALIGN_DECL:
  153. yyE (yyt->ALIGN_DECL.ALIGN_SOURCE);
  154. yyt = yyt->ALIGN_DECL.ALIGN_SPEC; break;
  155.   case kDECL_LIST:
  156. yyE (yyt->DECL_LIST.Elem);
  157. yyt = yyt->DECL_LIST.Next; break;
  158.   case kNODE_DISTRIBUTION:
  159. yyt = yyt->NODE_DISTRIBUTION.MAPPING; break;
  160.   case kBLOCK_DISTRIBUTION:
  161. yyt = yyt->BLOCK_DISTRIBUTION.SIZE; break;
  162.   case kCYCLIC_DISTRIBUTION:
  163. yyt = yyt->CYCLIC_DISTRIBUTION.SIZE; break;
  164.   case kDIST_LIST:
  165. yyE (yyt->DIST_LIST.Elem);
  166. yyt = yyt->DIST_LIST.Next; break;
  167.   case kACF_LIST:
  168. yyE (yyt->ACF_LIST.Elem);
  169. yyt = yyt->ACF_LIST.Next; break;
  170.   case kACF_BASIC:
  171. yyt = yyt->ACF_BASIC.BASIC_STMT; break;
  172.   case kACF_IF:
  173. yyE (yyt->ACF_IF.IF_EXP);
  174. yyE (yyt->ACF_IF.THEN_PART);
  175. yyt = yyt->ACF_IF.ELSE_PART; break;
  176.   case kACF_WHERE:
  177. yyE (yyt->ACF_WHERE.WHERE_EXP);
  178. yyE (yyt->ACF_WHERE.TRUE_PART);
  179. yyt = yyt->ACF_WHERE.FALSE_PART; break;
  180.   case kACF_SWITCH:
  181. yyE (yyt->ACF_SWITCH.SWITCH_EXP);
  182. yyt = yyt->ACF_SWITCH.SWITCH_STMT; break;
  183.   case kACF_ALTER:
  184. yyE (yyt->ACF_ALTER.ALTER_EXP);
  185. yyt = yyt->ACF_ALTER.ALTER_STMT; break;
  186.   case kACF_CASE:
  187. yyE (yyt->ACF_CASE.CASE_EXP);
  188. yyE (yyt->ACF_CASE.CASE_ALTS);
  189. yyt = yyt->ACF_CASE.CASE_OTHERWISE; break;
  190.   case kACF_WHILE:
  191. yyE (yyt->ACF_WHILE.WHILE_EXP);
  192. yyt = yyt->ACF_WHILE.WHILE_BODY; break;
  193.   case kACF_REPEAT:
  194. yyE (yyt->ACF_REPEAT.REPEAT_BODY);
  195. yyt = yyt->ACF_REPEAT.REPEAT_EXP; break;
  196.   case kACF_WITH:
  197. yyE (yyt->ACF_WITH.WITH_VARS);
  198. yyt = yyt->ACF_WITH.WITH_BODY; break;
  199.   case kACF_LOOP:
  200. yyt = yyt->ACF_LOOP.LOOP_BODY; break;
  201.   case kACF_DO:
  202. yyE (yyt->ACF_DO.DO_ID);
  203. yyE (yyt->ACF_DO.DO_RANGE);
  204. yyt = yyt->ACF_DO.DO_BODY; break;
  205.   case kACF_DOLOCAL:
  206. yyE (yyt->ACF_DOLOCAL.DOLOCAL_ID);
  207. yyE (yyt->ACF_DOLOCAL.DOLOCAL_RANGE);
  208. yyt = yyt->ACF_DOLOCAL.DOLOCAL_BODY; break;
  209.   case kACF_DOVEC:
  210. yyE (yyt->ACF_DOVEC.DOVEC_ID);
  211. yyE (yyt->ACF_DOVEC.DOVEC_RANGE);
  212. yyt = yyt->ACF_DOVEC.DOVEC_BODY; break;
  213.   case kACF_DOALL:
  214. yyE (yyt->ACF_DOALL.DOALL_NEW);
  215. yyE (yyt->ACF_DOALL.DOALL_ID);
  216. yyE (yyt->ACF_DOALL.DOALL_RANGE);
  217. yyt = yyt->ACF_DOALL.DOALL_BODY; break;
  218.   case kACF_FORALL:
  219. yyE (yyt->ACF_FORALL.FORALL_ID);
  220. yyE (yyt->ACF_FORALL.FORALL_RANGE);
  221. yyt = yyt->ACF_FORALL.FORALL_BODY; break;
  222.   case kACF_ON:
  223. yyE (yyt->ACF_ON.ON_VAR);
  224. yyt = yyt->ACF_ON.ON_STMT; break;
  225.   case kACF_BODY:
  226. yyt = yyt->ACF_BODY.NEW_BODY; break;
  227.   case kACF_FLOW_GRAPH:
  228. yyt = yyt->ACF_FLOW_GRAPH.FLOW_NODES; break;
  229.   case kACF_ENTRY:
  230. yyt = yyt->ACF_ENTRY.ENTRY_DECL; break;
  231.   case kSELECTED_ACF_LIST:
  232. yyE (yyt->SELECTED_ACF_LIST.Elem);
  233. yyt = yyt->SELECTED_ACF_LIST.Next; break;
  234.   case kSELECTED_ACF_NODE:
  235. yyE (yyt->SELECTED_ACF_NODE.SELECT_LIST);
  236. yyt = yyt->SELECTED_ACF_NODE.SELECT_ACFS; break;
  237.   case kEXP_STMT:
  238. yyt = yyt->EXP_STMT.STMT_EXP; break;
  239.   case kASSIGN_STMT:
  240. yyE (yyt->ASSIGN_STMT.ASSIGN_VAR);
  241. yyt = yyt->ASSIGN_STMT.ASSIGN_EXP; break;
  242.   case kPTR_ASSIGN_STMT:
  243. yyE (yyt->PTR_ASSIGN_STMT.ASSIGN_VAR);
  244. yyt = yyt->PTR_ASSIGN_STMT.ASSIGN_EXP; break;
  245.   case kLABEL_ASSIGN_STMT:
  246. yyt = yyt->LABEL_ASSIGN_STMT.LABEL_VAR; break;
  247.   case kCALL_STMT:
  248. yyE (yyt->CALL_STMT.CALL_ID);
  249. yyt = yyt->CALL_STMT.CALL_PARAMS; break;
  250.   case kIO_STMT:
  251. yyE (yyt->IO_STMT.ID);
  252. yyE (yyt->IO_STMT.IO_SPECS);
  253. yyt = yyt->IO_STMT.IO_ITEMS; break;
  254.   case kASS_GOTO_STMT:
  255. yyE (yyt->ASS_GOTO_STMT.GOTO_VAR);
  256. return;
  257.   case kCOMP_GOTO_STMT:
  258. yyt = yyt->COMP_GOTO_STMT.GOTO_EXP; break;
  259.   case kCOMP_IF_STMT:
  260. yyt = yyt->COMP_IF_STMT.IF_EXP; break;
  261.   case kRETURN_STMT:
  262. yyt = yyt->RETURN_STMT.RETURN_EXP; break;
  263.   case kSTOP_STMT:
  264. yyt = yyt->STOP_STMT.STOP_CONST; break;
  265.   case kFORMAT_STMT:
  266. yyt = yyt->FORMAT_STMT.FORMAT_PARAMS; break;
  267.   case kALLOCATE_STMT:
  268. yyE (yyt->ALLOCATE_STMT.PARAMS);
  269. yyt = yyt->ALLOCATE_STMT.STAT; break;
  270.   case kDEALLOCATE_STMT:
  271. yyE (yyt->DEALLOCATE_STMT.PARAMS);
  272. yyt = yyt->DEALLOCATE_STMT.STAT; break;
  273.   case kNULLIFY_STMT:
  274. yyt = yyt->NULLIFY_STMT.PARAMS; break;
  275.   case kREDUCE_STMT:
  276. yyE (yyt->REDUCE_STMT.RED_FUNC);
  277. yyt = yyt->REDUCE_STMT.RED_PARAMS; break;
  278.   case kGLOBAL_STMT:
  279. yyE (yyt->GLOBAL_STMT.ARRAY);
  280. yyE (yyt->GLOBAL_STMT.INDEXED_ARRAY);
  281. yyE (yyt->GLOBAL_STMT.INDEXES);
  282. yyt = yyt->GLOBAL_STMT.MASK; break;
  283.   case kALIGN_STMT:
  284. yyE (yyt->ALIGN_STMT.ALIGNEE);
  285. yyt = yyt->ALIGN_STMT.ALIGN_SPEC; break;
  286.   case kDISTRIBUTE_STMT:
  287. yyE (yyt->DISTRIBUTE_STMT.DISTRIBUTEE);
  288. yyt = yyt->DISTRIBUTE_STMT.DISTRIBUTION; break;
  289.   case kOP_EXP:
  290. yyE (yyt->OP_EXP.OPND1);
  291. yyt = yyt->OP_EXP.OPND2; break;
  292.   case kOP1_EXP:
  293. yyt = yyt->OP1_EXP.OPND; break;
  294.   case kSLICE_EXP:
  295. yyE (yyt->SLICE_EXP.START);
  296. yyE (yyt->SLICE_EXP.STOP);
  297. yyt = yyt->SLICE_EXP.INC; break;
  298.   case kPOSTFIX_EXP:
  299. yyt = yyt->POSTFIX_EXP.OPND; break;
  300.   case kCALL_EXP:
  301. yyE (yyt->CALL_EXP.FUNC_ID);
  302. yyt = yyt->CALL_EXP.FUNC_PARAMS; break;
  303.   case kCAST_EXP:
  304. yyE (yyt->CAST_EXP.ID);
  305. yyt = yyt->CAST_EXP.CAST; break;
  306.   case kINDEXED_EXP:
  307. yyE (yyt->INDEXED_EXP.IND_EXP);
  308. yyt = yyt->INDEXED_EXP.INDEX; break;
  309.   case kSELECTED_EXP:
  310. yyE (yyt->SELECTED_EXP.SELEC_EXP);
  311. yyt = yyt->SELECTED_EXP.SELECTOR; break;
  312.   case kASSIGN_EXP:
  313. yyE (yyt->ASSIGN_EXP.LHS);
  314. yyt = yyt->ASSIGN_EXP.RHS; break;
  315.   case kUSED_EXP:
  316. yyt = yyt->USED_EXP.VARNAME; break;
  317.   case kCOND_EXP:
  318. yyE (yyt->COND_EXP.COND);
  319. yyE (yyt->COND_EXP.TRUE_EXP);
  320. yyt = yyt->COND_EXP.FALSE_EXP; break;
  321.   case kVAR_EXP:
  322. yyt = yyt->VAR_EXP.V; break;
  323.   case kFUNC_CALL_EXP:
  324. yyE (yyt->FUNC_CALL_EXP.FUNC_ID);
  325. yyt = yyt->FUNC_CALL_EXP.FUNC_PARAMS; break;
  326.   case kNAMED_EXP:
  327. yyt = yyt->NAMED_EXP.VAL; break;
  328.   case kDO_EXP:
  329. yyE (yyt->DO_EXP.DO_ID);
  330. yyE (yyt->DO_EXP.RANGE);
  331. yyt = yyt->DO_EXP.BODY; break;
  332.   case kTYPE_EXP:
  333. yyE (yyt->TYPE_EXP.ID);
  334. yyt = yyt->TYPE_EXP.ELEMENTS; break;
  335.   case kARRAY_EXP:
  336. yyt = yyt->ARRAY_EXP.ELEMENTS; break;
  337.   case kBTE_LIST:
  338. yyE (yyt->BTE_LIST.Elem);
  339. yyt = yyt->BTE_LIST.Next; break;
  340.   case kUSED_VAR:
  341. yyt = yyt->USED_VAR.VARNAME; break;
  342.   case kINDEXED_VAR:
  343. yyE (yyt->INDEXED_VAR.IND_VAR);
  344. yyt = yyt->INDEXED_VAR.IND_EXPS; break;
  345.   case kSUBSTRING_VAR:
  346. yyE (yyt->SUBSTRING_VAR.IND_VAR);
  347. yyt = yyt->SUBSTRING_VAR.IND_EXP; break;
  348.   case kSELECTED_VAR:
  349. yyE (yyt->SELECTED_VAR.SELEC_VAR);
  350. yyt = yyt->SELECTED_VAR.SELECTOR; break;
  351.   case kLOOP_VAR:
  352. yyt = yyt->LOOP_VAR.LOOP_VARNAME; break;
  353.   case kADDR:
  354. yyt = yyt->ADDR.E; break;
  355.   case kDO_VAR:
  356. yyE (yyt->DO_VAR.DO_ID);
  357. yyE (yyt->DO_VAR.RANGE);
  358. yyt = yyt->DO_VAR.BODY; break;
  359.   case kBTV_LIST:
  360. yyE (yyt->BTV_LIST.Elem);
  361. yyt = yyt->BTV_LIST.Next; break;
  362.   case kVAR_PARAM:
  363. yyt = yyt->VAR_PARAM.V; break;
  364.   case kVALUE_PARAM:
  365. yyt = yyt->VALUE_PARAM.E; break;
  366.   case kNAMED_PARAM:
  367. yyt = yyt->NAMED_PARAM.VAL; break;
  368.   case kPROC_PARAM:
  369. yyt = yyt->PROC_PARAM.P; break;
  370.   case kFUNC_PARAM:
  371. yyt = yyt->FUNC_PARAM.F; break;
  372.   case kBTP_LIST:
  373. yyE (yyt->BTP_LIST.Elem);
  374. yyt = yyt->BTP_LIST.Next; break;
  375.   default: return;
  376.   }
  377.  }
  378. }
  379.  
  380. void BeginEval ()
  381. {
  382. }
  383.  
  384. void CloseEval ()
  385. {
  386. }
  387.